"""
列表推导式、生成器表达式、字典推导式

核心知识点：
    1.列表推导式性能高于列表操作
"""


def handle_item(item):
    return item * item


def use_list():
    """
    使用列表推导式
    """

    id_list = [i for i in range(8) if i % 2 == 0]
    print(id_list)
    # 输出结果：
    """
    [0, 2, 4, 6]
    """

    # 使用函数完成复杂逻辑
    id_list = [handle_item(i) for i in range(8) if i % 2 == 0]
    print(id_list)
    # 输出结果：
    """
    [0, 4, 16, 36]
    """


def use_generator():
    """
    使用生成器表达式
    """

    ids = (i for i in range(8) if i % 2 == 0)
    print(ids)
    id_list = list(ids)
    print(id_list)
    # 输出结果：
    """
    <generator object use_generator.<locals>.<genexpr> at 0x10fcee308>
    [0, 2, 4, 6]
    """


def use_dict():
    """
    使用字典推导式
    """

    user_dict = {"kevin": 18, "kk": 48}
    u_dict = {value: key for key, value in user_dict.items()}
    print(u_dict)
    # 输出结果：
    """
    {48: 'kk', 18: 'kevin'}
    """


def use_set():
    """
    集合推导式
    """
    user_dict = {"kevin": 18, "kk": 48}
    user_set = {key for key, value in user_dict.items()}
    print(user_set)
    # 输出结果：
    """
    {'kk', 'kevin'}
    """


if __name__ == '__main__':
    use_list()
    use_generator()
    use_dict()
    use_set()
